home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- #
- # cvscheck - identify files added, changed, or removed
- # in CVS working directory
- #
- # Contributed by Lowell Skoog <fluke!lowell@uunet.uu.net>
- #
- # This program should be run in a working directory that has been
- # checked out using CVS. It identifies files that have been added,
- # changed, or removed in the working directory, but not "cvs
- # committed". It also determines whether the files have been "cvs
- # added" or "cvs removed". For directories, it is only practical to
- # determine whether they have been added.
-
- name=cvscheck
- changes=0
-
- # If we can't run CVS commands in this directory
- cvs status . > /dev/null 2>&1
- if [ $? != 0 ] ; then
-
- # Bail out
- echo "$name: there is no version here; bailing out" 1>&2
- exit 1
- fi
-
- # Identify files added to working directory
- for file in .* * ; do
-
- # Skip '.' and '..'
- if [ $file = '.' -o $file = '..' ] ; then
- continue
- fi
-
- # If a regular file
- if [ -f $file ] ; then
- if cvs status $file | grep -s '^From:[ ]*New file' ; then
- echo "file added: $file - not CVS committed"
- changes=`expr $changes + 1`
- elif cvs status $file | grep -s '^From:[ ]*no entry for' ; then
- echo "file added: $file - not CVS added, not CVS committed"
- changes=`expr $changes + 1`
- fi
-
- # Else if a directory
- elif [ -d $file -a $file != CVS.adm ] ; then
-
- # Move into it
- cd $file
-
- # If CVS commands don't work inside
- cvs status . > /dev/null 2>&1
- if [ $? != 0 ] ; then
- echo "directory added: $file - not CVS added"
- changes=`expr $changes + 1`
- fi
-
- # Move back up
- cd ..
- fi
- done
-
- # Identify changed files
- changedfiles=`cvs diff | egrep '^diff' | awk '{print $3}'`
- for file in $changedfiles ; do
- echo "file changed: $file - not CVS committed"
- changes=`expr $changes + 1`
- done
-
- # Identify files removed from working directory
- removedfiles=`cvs status | egrep '^File:[ ]*no file' | awk '{print $4}'`
-
- # Determine whether each file has been cvs removed
- for file in $removedfiles ; do
- if cvs status $file | grep -s '^From:[ ]*-' ; then
- echo "file removed: $file - not CVS committed"
- else
- echo "file removed: $file - not CVS removed, not CVS committed"
- fi
- changes=`expr $changes + 1`
- done
-
- exit $changes
-